summaryrefslogtreecommitdiff
path: root/ui/routes/(login)/invite/[invite]/+page.svelte
blob: 132cbc1c5137f377d1fe69665fe9d1b68899382d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<script>
  import { goto } from '$app/navigation';
  import { acceptInvite } from '$lib/apiServer';

  import LogIn from '$lib/components/LogIn.svelte';

  let { data } = $props();

  let username = $state(''),
    password = $state('');
  let pending = false;
  let disabled = $derived(pending);

  async function onSubmit(event, inviteId) {
    event.preventDefault();
    pending = true;
    const response = await acceptInvite(inviteId, username, password);
    if (200 <= response.status && response.status < 300) {
      username = '';
      password = '';
      goto('/');
    }
    pending = false;
  }
</script>

{#await data.invite}
  <div class="invite-text">
    <p>Loading invitation…</p>
  </div>
{:then invite}
  <div class="invite-text">
    <p>Hi there! {invite.issuer} invites you to the conversation.</p>
  </div>
  <LogIn {disabled} bind:username bind:password onsubmit={(event) => onSubmit(event, invite.id)} />
{/await}